/**
 * Canvas này hiển thị các thông tin về tác giả
 */

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Graphics;

public class AboutCanvas extends Canvas {

	private static final int BGR_COLOR = 0x3A79FF;
	private static final String FULL_NAME = "BUI VAN NGHIA";
	private static final String EMAIL = "Y!M: KATATUNIX";
	private static final String PHONE = "0973569574";
	private static final String DATE = "JULY 2009";

	/**
	 * Mỗi dòng chữ được bao bọc bởi 1 đường viền trong suốt có
	 * độ dầy 2px. --> Khoảng cách giữa 2 dòng liên tiếp là 2 * PADDING
	 */
	private static final int PADDING = 2;

	private int width;
	private int height;

	/**
	 * Tổng chiều cao của cả đoạn text
	 * Ta cần canh giữa theo chiều dọc (Vertical) cả đoạn văn
	 */
	private int totalHeight;
	
	Display display;
	
	/**
	 * Trỏ đến MenuCanvas để hiện lại nó khi user muốn thoát Canvas này
	 */
	MenuCanvas prev;

	public AboutCanvas(Display display, MenuCanvas prev) {
		this.display = display;
		this.prev = prev;
		setFullScreenMode(true);
		
		width = getWidth();
		height = getHeight();
		
		totalHeight = ThemeManager.Big.pieceHeight +
				ThemeManager.Small.pieceHeight * 3 + 8 * PADDING;
	}

	protected void paint(Graphics g) {
		g.setColor(BGR_COLOR);
		g.fillRect(0, 0, width, height);
		
		/*
		 * Sử dụng các hàm tĩnh của lớp ThemeManager để vẽ ra các dòng text
		 * Tất cả các dòng đều được canh chính giữa theo chiều ngang
		 * Ta dùng hàm: ThemeManager.drawStringCenter
		 */
		int y = (height - totalHeight) / 2 + PADDING;
		ThemeManager.drawStringCenter(g, FULL_NAME, width, y,
				ThemeManager.BIG_STYLE, Graphics.TOP);
		
		y += ThemeManager.Big.pieceHeight + PADDING;
		ThemeManager.drawStringCenter(g, EMAIL, width, y,
				ThemeManager.SMALL_STYLE, Graphics.TOP);
		
		y += ThemeManager.Small.pieceHeight + PADDING;
		ThemeManager.drawStringCenter(g, PHONE, width, y,
				ThemeManager.SMALL_STYLE, Graphics.TOP);
		
		y += ThemeManager.Small.pieceHeight + PADDING;
		ThemeManager.drawStringCenter(g, DATE, width, y,
				ThemeManager.SMALL_STYLE, Graphics.TOP);
		
		ThemeManager.drawStringCenter(g, "BACK", width, height - 4,
				ThemeManager.BIG_STYLE, Graphics.BOTTOM);
	}
	
	private void backToMenu() {
		/*
		 * Khi quay về MenuCanvas ta muốn cho user xem hiệu ứng
		 * các dòng menu item xổ ra dần dần từ trên xuống dưới
		 * Chi tiết xem trong lớp MenuCanvas 
		 */
		prev.resetForAnimate();
		/*
		 * Quay về MenuCanvas
		 */
		display.setCurrent(prev);
	}
	
	protected void keyPressed(int keyCode) {
		backToMenu();
	}
	
	protected void pointerPressed(int x, int y) {
		backToMenu();
	}

}
